﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DAL.Entity;
using DAL.Persistencia;

namespace NewTierra.Pages
{
    public partial class AddCondPag : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                lblSupplier.Text = Convert.ToString(Session["Snome"]);
                PopulaGridCond();
            }
        }

        #region Popula Dados

        protected void PopulaGridCond()
        {
            try
            {
                CondPagDAL cpd = new CondPagDAL();

                GridCond.DataSource = cpd.ListarTodos(Convert.ToInt32(Session["Sid"]));
                GridCond.DataBind();

            }
            catch (Exception ex)
            {
                lblMsgAddCond.Text = ex.Message;
            }
        }

        protected void PaginarDados(object sender, GridViewPageEventArgs e)
        {
            GridCond.PageIndex = e.NewPageIndex;
            PopulaGridCond();
        }

        #endregion

        #region CRUD CondPag

        protected void SalvarCond(object sender, EventArgs e)
        {
            try
            {
                if (txtCodigo.Text != "")
                {
                    LimpaCampos(this.Controls);
                    lblMsgAddCond.Text = "";
                    btnNovaCondPag.Text = "Salvar";
                    txtFonte.Focus();
                    return;
                }

                if (ddlTipoCambio.SelectedValue.Equals("0"))
                {
                    MostrarMsg("Selecione tipo de cambio.");
                    return;
                }

                S_Cond_Pagamento scp = new S_Cond_Pagamento();

                scp.CondPag_fontecambio = txtFonte.Text;
                scp.CondPag_tipocambio = VerifNulo(ddlTipoCambio.SelectedValue);
                scp.CondPag_datatroca = rdoDataCambio.SelectedValue;
                scp.CondPag_prazofaturamento = Convert.ToInt32(txtPrazoFat.Text);
                scp.CondPag_banco = txtBanco.Text;
                scp.CondPag_agencia = txtAgencia.Text;
                scp.CondPag_conta = txtConta.Text;
                scp.S_id = Convert.ToInt32(Session["Sid"]);

                CondPagDAL cp = new CondPagDAL();

                cp.Salvar(scp);

                MostrarMsg("Registro cadastrado com sucesso.");

                PopulaGridCond();
                LimpaCampos(this.Controls);
            }
            catch (Exception ex)
            {
                lblMsgAddCond.Text = ex.Message;
            }
        }

        protected string VerifNulo(string text)
        {
            if (text.Equals("0"))
            {
                return null;
            }
            else
            {
                return text;
            }
        }

        protected void AtualizarCond(object sender, EventArgs e)
        {
            try
            {

                if (txtCodigo.Text.Equals(""))
                {
                    MostrarMsg("Selecione um registro para ser atualizado.");
                    return;
                }

                if (ddlTipoCambio.SelectedValue.Equals("0"))
                {
                    MostrarMsg("Selecione tipo de cambio.");
                    return;
                }

                S_Cond_Pagamento scp = new S_Cond_Pagamento();

                scp.CondPag_id = Convert.ToInt32(txtCodigo.Text);
                scp.CondPag_fontecambio = txtFonte.Text;
                scp.CondPag_tipocambio = ddlTipoCambio.SelectedValue;
                scp.CondPag_datatroca = rdoDataCambio.SelectedValue;
                scp.CondPag_prazofaturamento = Convert.ToInt32(txtPrazoFat.Text);
                scp.CondPag_banco = txtBanco.Text;
                scp.CondPag_agencia = txtAgencia.Text;
                scp.CondPag_conta = txtConta.Text;
                scp.S_id = Convert.ToInt32(Session["Sid"]);

                CondPagDAL cp = new CondPagDAL();

                cp.Atualizar(scp);

                MostrarMsg("Registro cadastrado com sucesso.");

                PopulaGridCond();
                LimpaCampos(this.Controls);

            }
            catch (Exception ex)
            {
                lblMsgAddCond.Text = ex.Message;
            }
        }

        protected void ExcluirCond(object sender, CommandEventArgs e)
        {
            try
            {

                CondPagDAL cpd = new CondPagDAL();

                S_Cond_Pagamento s = cpd.ObterPorId(Convert.ToInt32(e.CommandArgument));
                cpd.Excluir(s);

                MostrarMsg("Registro excluído com sucesso.");
                PopulaGridCond();

            }
            catch (Exception ex)
            {
                lblMsgAddCond.Text = ex.Message;
            }
        }

        #endregion

        #region Regras

        protected void EditarCond(object sender, CommandEventArgs e)
        {
            try
            {
                int myid = Convert.ToInt32(e.CommandArgument);

                CondPagDAL cpd = new CondPagDAL();

                S_Cond_Pagamento s = cpd.ObterPorId(myid);

                txtCodigo.Text = s.CondPag_id.ToString();
                txtFonte.Text = s.CondPag_fontecambio;
                ddlTipoCambio.SelectedValue = s.CondPag_tipocambio;
                rdoDataCambio.SelectedValue = s.CondPag_datatroca;
                txtPrazoFat.Text = s.CondPag_prazofaturamento.ToString();
                txtBanco.Text = s.CondPag_banco;
                txtAgencia.Text = s.CondPag_agencia;
                txtConta.Text = s.CondPag_conta;

            }
            catch (Exception ex)
            {
                lblMsgAddCond.Text = ex.Message;
            }
        }

        protected void Limpar(object sender, EventArgs e)
        {
            LimpaCampos(this.Controls);
        }

        protected void LimpaCampos(ControlCollection controls)
        {
            foreach (Control ctrl in controls)
            {
                if (ctrl is TextBox)
                {
                    (ctrl as TextBox).Text = string.Empty;
                }
                // ... demais controles que queira limpar

                LimpaCampos(ctrl.Controls);
            }
        }

        #endregion

        protected void MostrarMsg(string Msg)
        {
            ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "call me", "showAutoCloseMessage('" + Msg + "')", true);
        }

    }
}